package com.Test.HomeWork;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;

/**
 * 1、 读取某个java文件，将该java文件中的有效代码行，注释行，空白行统计出来(结合字符流、正则表达式、字符串类相关方法做)
 * 一行行数据的读，去掉空格后判断是 否由//开头或/*开头，表示注释行
 * 当读到到一行空白行(没有字符) 就认为是空白行，剩下的就是有效代码行了
 */


public class work7 {
    public static void main(String[] args) throws IOException {
        //File file=new File("G:\\培训班\\代码块\\day02\\src\\Test");
       // File file=new File("G:\\培训班\\代码块\\week4\\day2\\src\\com\\HomeWork\\work7.java");
        File file=new File("G:\\培训班\\代码块\\week4\\day2\\src\\com\\HomeWork");
        ReadJavaFile(file);

        //File fileJava=ReadJavaFile(file);
       // readCount(fileJava);
//        File file=new File("G:\\培训班\\代码块\\day02\\src\\Test\\Arrary.java");
//        readCount(file);

    }

    public static void readCount(File file) throws IOException {
        FileReader fileReader=new FileReader(file);
        BufferedReader bufferedReader=new BufferedReader(fileReader);
        int code=0;
        int space=0;
        int comment=0;
        int zhushi=0;//

        while (true){
            String s=bufferedReader.readLine();
            if(s==null){
                break;
            }
            //统计空行
            if("".equals(s.trim())){
                 space++;
            }
            s=s.trim();
            if(s.startsWith("//")){
                zhushi++;
            }
            if(s.startsWith("/*") || s.startsWith("*") || s.endsWith("*/")){
                zhushi++;

            }

            if(s.trim().matches("[/]{2}.*")){
                space++;
            }
            comment++;
            //
//            if(s.matches("^[//s&&[^//n]]*$")){
//                comment++;
//
//            }

            //System.out.println(s);

        }
        comment=comment-space-zhushi;
       // System.out.println(" hang"+comment);
        System.out.println("空白数"+space+"注释数 "+zhushi+" 有效代码 "+comment);


    }

    public static void ReadJavaFile(File file) throws IOException {
        File[] files = file.listFiles();
        if (files != null) {
            for (File f : files) {
                if (f.isDirectory()) {
                    ReadJavaFile(f);
                } else {
                    if (f.getName().endsWith(".java")) {
                        String p = f.getAbsolutePath();
                        System.out.println("wenjian" + p);
                        readCount(f);
                    }
                }
            }
        }

       // return file;
    }
}
